“El ordenador cambia la epistemología, cambia el significado de entender” (Gregory Chaitin)
“El ordenador es un nuevo estupendo concepto filosófico y matemático” (Gregory Chaitin)
“La informática tiene que ver con los ordenadores lo mismo que la astronomía con los telescopios” (Edsger Dijkstra)
La Filosofía de la Informática
La filosofía de la informática trata de las cuestiones filosóficas que surgen al estudiar la naturaleza de los conceptos informáticos, tales como: dato, información, lenguaje de programación, programa, base de datos, etc. En definitiva, trata de descubrir los conceptos profundos que se ocultan tras estos conceptos superficiales.
La filosofía de la informática pretende desarrollar una filosofía diferenciada de las filosofías de otras disciplinas como la matemática y la física, disciplinas con las que la informática está emparentada. Pero, hasta ahora, esta filosofía apenas se ha desarrollado debido esencialmente a que la informática carece −o ha carecido hasta ahora− de fundamentos sólidos. Pues es en estos fundamentos donde se encuentra la filosofía.
La filosofía de la informática trata de contribuir a un conocimiento más profundo de la informática y eventualmente contribuir a proporcionarla una fundamentación. Además, la filosofía realiza una labor interdisciplinaria, pues en lo profundo están conectadas todas las cosas.
La filosofía contemporánea, por su parte, ha privilegiado la reflexión sobre el fenómeno de las tecnologías de la información y la comunicación, y su manifestación más relevante: Internet, la “Infoesfera”, la Red global ha producido la llamada “sociedad de la información” o “sociedad del conocimiento”, que se considera la sucesora de la sociedad industrial o post-industrial. La Red ha adquirido tanta importancia que ha emergido la “Ciencia de la Red” (Web Science).
Las cuestiones
Entre las cuestiones que se plantea la filosofía de la informática están las siguientes:
¿Qué es exactamente la informática? ¿Es una ciencia o una técnica? Si la informática es una ciencia, ¿cuales son sus fundamentos?
¿Cuál es la diferencia entre informática y matemática? ¿Desempeña la matemática algún papel en la informática?
¿Qué es la información? ¿Cual es la diferencia entre dato, información y conocimiento?
¿Qué es la computación? ¿Existe la supercomputación? ¿Existe un límite computacional?
¿Qué pueden hacer los ordenadores? ¿Cuales son sus límites?
¿Qué clase de entes son los objetos digitales? ¿Necesitamos una nueva categoría ontológica para ellos?
¿Qué es un lenguaje de programación? ¿Qué es un metalenguaje? ¿Necesitamos una jerarquía de metalenguajes?
¿Por qué hay tantos lenguajes de programación? ¿Es posible construir un lenguaje universal del que deriven todos los demás lenguajes?
¿Por qué los lenguajes de programación son complejos?
¿Por qué hay tantos paradigmas de programación?¿Existe un paradigma universal a partir del cual derivar o expresar todos los paradigmas particulares? ¿Los paradigmas son teorías científicas?
¿Qué clase de entes son los programas de ordenador? ¿Son entes concretos o abstractos?
¿Qué tipos de abstracciones contienen los lenguajes de programación? ¿Son las mismas que las abstracciones matemáticas? ¿Existen niveles de abstracción? ¿Si es así, existe un nivel supremo de abstracción?
¿Que tipo de semántica tienen los lenguajes de programación? ¿Se puede formalizar la semántica de un lenguaje de programación? ¿Cual es la relación entre abstracción y semántica?
¿Por qué hay gap semántico entre los lenguajes de programación y los lenguajes naturales?
¿Por qué se necesitan tipo de datos en los lenguajes de programación?
¿Cual es la diferencia entre programa y algoritmo? Un algoritmo se suele considerar un ente matemático. Entonces, ¿se puede considerar que un programa es la manifestación (en sentido platonista) de un algoritmo? ¿Y que los algoritmos son entes abstractos y los programas son entes concretos? ¿Y es esta la razón por la que un algoritmo no se puede registrar legalmente y sí se puede registrar un programa de ordenador?
¿Cual es la diferencia entre programación y especificación? ¿Hay lenguajes de especificación?
¿Cuando dos programas se pueden considerar equivalentes?
¿Cual es la relación que existe entre una máquina real y una virtual?
¿Hasta qué punto la informática es dependiente de las máquinas? ¿Se puede hacer informática sin máquinas?
¿Por qué hay código fuente y código objeto? ¿Sería posible unificarlos?
¿Qué tipo de lógica es la que utilizan los lenguajes de programación?
¿Qué significa que un programa es correcto? ¿Existe alguna relación con la demostración matemática?
¿Por qué hay tantos entes abstractos como gramáticas, máquinas virtuales, tipos de datos abstractos, etc.? ¿No se pueden reducir o simplificar en unas categorías esenciales?
¿Cuales son las instrucciones esenciales que debe tener todo toda máquina o dispositivo computacional?
¿Los lenguajes de programación son estructuras matemáticas?
¿Cual es la relación entre mente y ordenador?
¿Pueden pensar las máquinas?
¿Por qué hay diferencias entre los lenguajes de programación y los lenguajes de IA (inteligencia artificial)?
¿Es posible unificar ontología y epistemología en los lenguajes de programación?
¿Es posible crear un lenguaje de programación que sea a la vez operativo y descriptivo?
¿Existen computaciones y descripciones de orden superior?
¿Existe realmente una frontera claramente definida entre hardware y software?
¿Pueden evolucionar los programas de ordenador?
¿Cuales son las posibles formas de interacción entre programas?
De todas estas cuestiones, la más fundamental es la relativa a la verdadera naturaleza de la informática, la cual no se conoce con exactitud. Esta situación justifica que existan al menos 4 nombres que intentan capturar su principio esencial: 1) La Ciencia de los Ordenadores (Computer Science); 2) Informática (Informatics); 3) La Ciencia de la Información y Computación (Information and Computing Science); 4) Las Tecnologías de la Información y Comunicación (Information and Communication Technologies, ICT).
Desde el comienzo de la era de los ordenadores hasta hoy, ha habido numerosos intentos de capturar la naturaleza de la informática mediante una definicíon, entre ellas las siguientes:
Es una forma de matemática o una rama de las matemáticas.
Es matemática computacional.
Es la ciencia del proceso de la información.
“Es la ciencia de los ordenadores y de los fenómenos que les rodean (tales como algoritmos, etc.)” [Newell, Perlis y Simon, 1967]. Esta visión se reflejó también en un posterior libro de Herbert Simon [2006] titulado “Las Ciencias de lo Artificial”.
“Es el estudio (no la ciencia) de los algoritmos y los fenómenos que les rodean (tales como los ordenadores que los ejecutan, etc.)” [Newell & Simon, 1976; Simon, 1996].
“Es una ciencia natural, no de ordenadores o algoritmos, sino de procedimientos” [Shapiro, 2001].
“No es una ciencia, sino una rama de la ingeniería” [Brooks, 1996].
“Es el cuerpo de conocimiento que trata de los procesos de tratamiento de la información” [Denning, 1985].
“Es el estudio de la propia información” [Hartmans & Lin, 1992].
Es un “arte”, al menos la tarea de programar, como reflejó Donald Knuth [1986] en su obra “The Art of Computer Programming”.
Hasta ahora no ha habido ninguna definición plenamente aceptada de la informática, porque se ignora su verdadera naturaleza. Está en una situación similar a la matemática, que tampoco tiene fundamentos sólidos desde 1931, cuando Gödel demostró su famoso teorema de incompletud. Quizás esto se deba también al carácter polifacético de la informática, que ofrece múltiples aspectos (información, computación, comunicación, lenguajes de programación, interfases de usuario, bases de datos, gráficos, la Web, etc.), que no están conectados por una raíz común.
Lo que sí se intuye es que la informática es una disciplina muy importante, pues supone un nuevo paradigma integrador o unificador, una nueva conciencia, una nueva forma de concebir la realidad. Se la ha denominado “la ciencia del siglo XXI”.
MENTAL como Ordenador Filosófico
Las cuestiones anteriores relativas a la filosofía de la informática se han planteado desde un nivel de conciencia superficial, desde el que se contemplan multitud de cuestiones. Desde un punto de vista profundo, todo se vuelve más claro y simple, y la mayoría de estas cuestiones y problemas dejan de tener sentido o se diluyen porque a nivel profundo desaparecen las fronteras entre los dominios, los conceptos se unifican y conectan a través de los arquetipos primarios.
Los lenguajes de programación se han construido desde lo superficial hacia lo profundo, desde lo particular a lo general, desde la sintaxis a la semántica, desde el código de máquina a los lenguajes próximos al lenguaje natural.
Esta estrategia ha tenido un aspecto positivo: ha posibilitado el desarrollo de la Informática a nivel práctico. Ha sido precisamente el bajo nivel de abstracción de la máquina de Turing la que inspiró la aparición de la arquitectura von Neumann de los ordenadores, basada en una memoria secuencial (como la cinta de la máquina de Turing) en donde se almacenaba el código del programa (las reglas operativas de la máquinade Turing). Además 0 y 1 son arquetipos porque son opuestos o complementarios universales, cuya semántica está abierta a diferentes interpretaciones.
Pero ha tenido también efectos negativos:
Ha ocasionado una falta de fundamentación de alto nivel.
La gran complejidad en la implementación de intérpretes y compiladores de los lenguajes. Pues se trata de implementar conceptos de alto nivel de abstracción con elementos de bajo nivel.
La estrategia que consideramos correcta es justamente lo contraria: establecer primero la semántica, lo más universal posible mediante un conjunto de conceptos universales, lo profundo, y posteriormente ir hacia la sintaxis, lo superficial, lo particular.
Es mejor, más adecuado y fructífero basarse en el nivel más profundo: los arquetipos primarios, si queremos evolucionar hacia sistemas de mayor nivel semántico capaces de implementar la Inteligencia Artificial y la Web Semántica.
Hacer “filosofía de la informática” es intentar descubrir sus fundamentos, sus conceptos esenciales, un proceso que va de lo superficial a lo profundo. Pero con MENTAL no tenemos que hacer filosofía de la informática −como tampoco tenemos que hacer filosofía de la información− porque la informática emerge desde los arquetipos primarios, que son también categorías filosóficas, las categorías supremas de la realidad. Y lo que emerge son expresiones descriptivas y operativas.
Matemática e informática son manifestaciones de los mismos arquetipos primarios. MENTAL es el fundamento teórico y práctico de la informática y la matemática. Las fronteras entre ambas disciplinas se difuminan porque comparten los mismos principios, aunque una se puede considerar dual de la otra. La matemática es más descriptiva y demostrativa (utiliza la lógica deductiva). La informática es más operativa y utiliza una lógica de decisión. Pero la frontera entra ambas es difusa.
Todos los aspectos de la informática, hasta ahora desconectados, tienen un fundamento común. No tiene sentido, por ejemplo, hablar de “La Ciencia de la Red” (Web Science) como una disciplina independiente, pues todo se basa en los mismos principios.
La denominación de “informática” no es la más adecuada, porque la informática trasciende el concepto de “proceso de información”. De ahí que la denominación “MENTAL” intenta indicar que se trata de algo que trasciende a la matemática y a la informática.
La informática no es la ciencia de lo artificial, como afirmaba Herbert Simon. Es todo lo contrario. Trata de lo natural, de la realidad, que son los paradigmas primarios, realidad que en lo profundo es de naturaleza abstracta, de los arquetipos primarios que se manifiestan como expresiones que sirven para describir, computar, interrelacionar, etc. La realidad abstracta incluye espacio y tiempo abstractos.
MENTAL es un modelo de la mente y el modelo de una máquina abstracta. Las primitivas semánticas de MENTAL se pueden considerar como las “instrucciones” de un hipotético ordenador, un ordenador que puede construirse realmente y que es un modelo de la mente humana, de la realidad interior y exterior. Al ser estas primitivas categorías filosóficas a priori, podemos considerar que MENTAL es un ordenador filosófico.
Información y computación son dos aspectos de las expresiones. La primera es pasiva (se autoevalúa). La segunda es activa (se evalúa como una expresión diferente).
Los límites del lenguaje son los arquetipos primarios, los grados de libertad, tanto a nivel descriptivo como operativo. No tiene sentido hablar de supercomputación, como no tiene sentido hablar de superinformación, aunque sí podemos hablar de meta-expresiones en general.
No hay diferencia conceptual entre programación y especificación. Solo se diferencia en el nivel de detalle. Se usa el mismo lenguaje. A todos los niveles, desde lo general a lo específico, se utilizan las mismas primitivas.
Une lo descriptivo y lo operativo (o computacional).
Los límites del lenguaje son las primitivas, que son los grados de libertad.
MENTAL es un lenguaje de programación y de IA.
La mayoría de los lenguajes de programación son lenguajes “tipados”. Los tipo juegan un papel a mitad de camino entre sintaxis y semántica y tienen un carácter implementador. En MENTAL no hay tipos porque en el lenguaje no hay referencias implementadoras.
La informática no está ligada a las máquinas. Está ligada a la naturaleza profunda de la realidad.
La informática y la IA comparten los mismos principios: los arquetipos primarios.
MENTAL supone un “giro lingüístico arquetipal”, más allá del “giro lingüístico”, del “giro informacional” y del “giro computacional”.
La informática, en general, se ha considerado “la tercera cultura”, una cultura puente entre ciencia y humanismo. Pero MENTAL es la verdadera tercera cultura. [ver Unión de Opuestos – MENTAL, un Lenguaje de la Tercera Cultura.]
Como conclusión podemos decir que el paradigma arquetipal da sus frutos: se aclara la verdadera naturaleza de la filosofía de la informática, y MENTAL como ordenador filosófico.
Bibliografía
Brooks, Frederick P., Jr. The Computer Scientist as Toolsmith II. Communications of the ACM, 39:3, pp. 61-68, March, 1996.
Colburn, Timothy. Philosophy and Computer Science. Explorations in Philosophy. M.E. Sharpe, 1999.
Copeland, Jack. Inteligencia Artificial. Una introducción filosófica. Alianza, 1993.
Denning, Peter J. What Is Computer Science? American Scientist, 73 (January - February), pp. 16-19, 1985.
Floridi, Luciano. Philosophy and Computing. An Introduction. Routledge, 1999.
Floridi, Luciano (editor). The Blackwell Guide to the Philosophy of Computing and Information. Blackwell Publishing, 2004.
Floridi, Luciano (editor). Philosophy of Computing and Information: 5 Questions. Automatic Press, 2008.
Grim, Patrick; Mar, Gary; St. Denis, Paul. The Philosophical Computer. Exploratory Essays in Philosophical Computer Modeling. MIT Press, 1998.
Hartmanis, Juris; Lin, Herbert. What is Computer Science and Engineering? In Computing the Future: A Broader Agenda for Computer Science and Engineering, ed. Juris Hartmanis and Herbert Lin, Washington: National Academy Press, chap. 6, pp. 163-216, 1992.
Knuth, Donald. El arte de programar ordenadores. Editorial Reverté, 1986.
Leeuwen, Jan van. Towards a philosophy of the information and computing sciences. NIAS Newsletter 42, 2009.
Moor, James H.; Ward Bynum, Terrell (editores). CyberPhilosophy. The Intersection of Philosophy and Computing. Wiley-Blackwell, 2003.
Moor, James H.; Ward Bynum, Terrell (editores). The Digital Phoenix. How Computers are Changing Philosophy. Wiley-Blackwell, 1998.
Newell, Alan; Perlis, Alan; Simon, Herbert. Computer Science. Letter in Science 157 (3795), pp. 1373–1374, September 1967.
Rapaport, William J. Philosophy of Computer Science. An Introductory Course. Teaching Philosophy, 28:4, pp. 319-341, Dec. 2005.
Shapiro, Stuart C. Computer Science: The Study of Procedures. Internet, 2001.
Simon, Herbert Alexander. Las ciencias de lo artificial. Comares, 2006.
Sloman, Aaron. The computer revolution in philosophy. Philosophy, science, and models of mind. Harvester Press, 1978.
Turner, Raymond; Eden, Amnon. The Philosophy of Computer Science. The Stanford Encyclopedia of Philosophy, 2011.
Vallverdú, Jordi. Thinking Machines and the Philosophy of Computer Science. Concepts and Principles. IGI Global Group, 2010.